package leetcode_core.leetcode_5;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * 功能描述
 *
 * @author: 张庭杰
 * @date: 2022年11月22日 22:31
 */
public class GetSkyline {
    public List<Integer> twoOutOfThree(int[] nums1, int[] nums2, int[] nums3) {
        //三个Hash-map
        Map<Integer,Integer> map1 = new HashMap<>();
        Map<Integer,Integer> map2 = new HashMap<>();
        Map<Integer,Integer> map3 = new HashMap<>();
        Map<Integer,Integer> finalMap = new HashMap<>();
        putItem(map1,nums1);
        putItem(map2,nums2);
        putItem(map3,nums3);
        List<Integer> list = new ArrayList<>();
        checkItem(list,map1,map2,map3,finalMap);
        checkItem(list,map2,map1,map3,finalMap);
        checkItem(list,map3,map1,map2,finalMap);
        return list;
    }
    private void putItem(Map map,int[] nums){
        for(int num:nums){
            map.put(num,(Integer)map.getOrDefault(num,0)+1);
        }
    }
    private void checkItem(List<Integer> list,Map<Integer,Integer> map1,
                           Map<Integer,Integer> map2,Map<Integer,Integer> map3,Map<Integer,Integer> finalMap){
        for (Map.Entry<Integer, Integer> entry: map1.entrySet()) {
            Integer key = entry.getKey();
            if(map2.get(key)!=null&&map2.get(key)>0){
                if(finalMap.get(key) ==null){
                    list.add(key);
                    finalMap.put(key,1);
                    continue;
                }
            }
            if(map3.get(key)!=null&&map3.get(key)>0){
                if(finalMap.get(key) ==null){
                    list.add(key);
                    finalMap.put(key,1);
                }
            }
        }
    }

}
